home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- set -e
-
- # Source debconf library.
- . /usr/share/debconf/confmodule
-
- # The same as /usr/bin/which - in order to make "which" available before
- # /usr is mounted
- which () {
- local IFS
- IFS=:
- for i in $PATH; do
- if [ -x "$i/$1" ]; then
- echo "$i/$1"
- return 0
- fi
- done
- return 1
- }
-
- # In d-i the config script is not executed automatically
- if [ -f /usr/share/console-setup/keyboard-configuration.config ]; then
- /usr/share/console-setup/keyboard-configuration.config || exit $?
- fi
-
-
-
- keyboard_present () {
- local kern kbdpattern class subclass protocol
-
- kern=`uname -r`
- case "$kern" in
- 1*|2.0*|2.1*|2.2*|2.3*|2.4*|2.5*)
- # can't check keyboard presence
- return 0;
- ;;
- esac
-
- [ -f /proc/bus/input/devices ] || return 0
- kbdpattern="AT Set \|AT Translated Set\|AT Raw Set"
- kbdpattern="$kbdpattern\|Atari Keyboard"
- kbdpattern="$kbdpattern\|Amiga Keyboard"
- kbdpattern="$kbdpattern\|HIL keyboard"
- kbdpattern="$kbdpattern\|ADB keyboard"
- kbdpattern="$kbdpattern\|Sun Type"
- if grep -i "$kbdpattern" /proc/bus/input/devices >/dev/null; then
- return 0
- fi
-
- [ -d /sys/bus/usb/devices ] || return 0
- for d in /sys/bus/usb/devices/*:*; do
- class=$(cat "$d/bInterfaceClass") # 03 = Human Interface Device
- subclass=$(cat "$d/bInterfaceSubClass") # 01 = Boot Interface Subclass
- protocol=$(cat "$d/bInterfaceProtocol") # 01 = Keyboard
- case "$class:$subclass:$protocol" in
- 03:01:01)
- return 0
- ;;
- esac
- done
-
- return 1
- }
-
- # keyboard_present () {
- # if there is a keyboard; then
- # return 0
- # else
- # return 1
- # fi
- # }
-
- CONFIGFILE=/etc/default/keyboard
-
- if [ "$1" = "configure" -a ! -L "$CONFIGFILE" ]; then
-
- db_get keyboard-configuration/modelcode
- model="$RET"
-
- db_get keyboard-configuration/layoutcode
- layout="$RET"
-
- db_get keyboard-configuration/variantcode
- variant="$RET"
-
- db_get keyboard-configuration/optionscode
- options="$RET"
-
- if [ ! -e $CONFIGFILE ]; then
- cat /usr/share/console-setup/keyboard \
- 2>/dev/null >$CONFIGFILE || true
- fi
-
- # Ensure we do not mess up the config file's ownership and permissions.
- cp -a -f $CONFIGFILE $CONFIGFILE.tmp
-
- # If the admin deleted or commented some variables but then set
- # them via debconf, (re-)add them to the conffile.
- for var in XKBMODEL XKBLAYOUT XKBVARIANT XKBOPTIONS BACKSPACE; do
- if ! grep "^ *${var}=" $CONFIGFILE >/dev/null; then
- echo "${var}=" >>$CONFIGFILE
- fi
- done
-
- sed \
- -e "s|^ *XKBMODEL=.*|XKBMODEL=\"$model\"|" \
- -e "s|^ *XKBLAYOUT=.*|XKBLAYOUT=\"$layout\"|" \
- -e "s|^ *XKBVARIANT=.*|XKBVARIANT=\"$variant\"|" \
- -e "s|^ *XKBOPTIONS=.*|XKBOPTIONS=\"$options\"|" \
- -e "s|^ *BACKSPACE=.*|BACKSPACE=\"${BACKSPACE:-guess}\"|" \
- <$CONFIGFILE >$CONFIGFILE.tmp
-
- mv -f $CONFIGFILE.tmp $CONFIGFILE
-
- db_set keyboard-configuration/store_defaults_in_debconf_db true
- fi
-
- if \
- [ -d /lib/debian-installer.d ] && keyboard_present
- then
- if [ "$DISPLAY" ] && which setxkbmap >/dev/null; then
- setxkbmap -option '' -model "$model" "$layout" "$variant" "$options"
- else
- OS=`udpkg --print-os`
- if [ "$OS" = hurd ]
- then
- kill `cat /var/run/hurd-console.pid`
- else
- setupcon --force --save
- fi
- fi
- fi
-
- # Automatically added by dh_installinit
- if [ -x "/etc/init.d/keyboard-setup" ]; then
- update-rc.d keyboard-setup start 06 S . >/dev/null || exit $?
- fi
- # End automatically added section
- # Automatically added by dh_installinit
- if [ -x "/etc/init.d/console-setup" ]; then
- update-rc.d console-setup start 49 S . >/dev/null || exit $?
- fi
- # End automatically added section
-
-